-- Lua 脚本：管理聊天消息列表（支持批量添加）
-- 参数：
--   KEYS[1] : 列表 key
--   ARGV[1] : 最大消息数量 (maxMessages)
--   ARGV[2-n] : 新消息列表 (json 格式)

local key = KEYS[1]
local maxMessages = tonumber(ARGV[1])

-- 1. 获取列表当前大小
local size = redis.call('LLEN', key)

-- 2. 处理每个新消息
for i = 2, #ARGV do
    local newMessage = ARGV[i]

    -- 如果列表大小大于等于 maxMessages，则从右侧弹出一个元素
    if size >= maxMessages then
        redis.call('RPOP', key)
        size = size - 1  -- 更新 size
    end

    -- 在列表左侧插入新消息
    redis.call('LPUSH', key, newMessage)
    size = size + 1  -- 更新 size
end

return true
